當服務負載量日益繼夜的增加,對於效能、速度的要求就會越來越高。目前接觸的工作無論對於程式碼、伺服器調教或資料庫設定都非常的嚴謹,在某次 code review 建議加入with NOLOCK ,才開始接觸 hint。個人在先前對於 Hint 非常的陌生,直到最近在大型專案撰寫 Stored Procedure 才些微了解 Hint 的作用。由於第一次接觸 hint,文章內容若有錯誤或任何見,請各位先進不吝指教。
介紹
在使用 Hint 之前,我們必須注意一下微軟官方文件的警告:
NoLock 能在非交易且不要求資料準確性下情況,執行 SQL Command 時可以提升查詢效能。NoLock 會成 Dirty Read。
註:兩個交易同時進行時,某一個交易變更了資料,另一個交易讀取了未確認的的資料(未依序)的情況下所產生的資料不準確性。
Table Hint 的用法如下:
FROM Table WITH (Table Hint)
註:可以使用在 JOIN Table
實際我們測試如下:
(因為手邊沒有大量資料可以進行測試,故沒有辦法很明確得知增加多快)